const eventBus={
    //保存类型与回调的容器
    callbacks:{}  //login:[fn1,fn2]  回调函数
}

//绑定事件  将回调函数保存到容器中
eventBus.on=function(type,callback){
    //判断
    if(this.callbacks[type])  //如果容器数组里有login了 那么往里加回调函数 
    {
        //如果callbacks属性中存在该类型事件  就往里面压  一个自定义可以有多个事件
        this.callbacks[type].push(callback)
    }
    else{   //如果容器数组里没有login这个 那么把函数交给他
        //如果callbacks属性中不存在该类型事件 就往里面存
        this.callbacks[type]=[callback]  //如果没有type的话 就往里添加type回调函数
    }
}
//触发事件  调用回调函数 将data传给回调函数
eventBus.emit=function(type,data){
    //判断
    if(this.callbacks[type]&&this.callbacks[type].length>0)
    {
        //遍历数组
        this.callbacks[type].forEach(callback=>{
            callback(data)
        })
    }
}


eventBus.off=function(type)
{
    if(type)
    {
        //只是删除typpe对应的事件回调  this.callbacks[type]=[fn1,fn2]  callbacks:{login:[f1,f2]}
        //this.callbacks[type]  对象对应的那个属性的值
        delete this.callbacks[type]
    }
    else
    {
         this.callbacks={}  
    }
}